package com.xinzhi.utils;

import com.qcloud.cos.COSClient;
import com.qcloud.cos.model.PutObjectRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.File;
import java.io.IOException;
import java.util.UUID;

@Component
//根据前端传回的图片生成url
public class GetImageUrlUtil {
    @Autowired
    private COSClient cosClient;
    //腾讯云的配置桶名称
    @Value("${tencent.cos.bucketName}")
    private  String bucketName;
    public  String getImageUrl(@NotNull MultipartFile file){
        @NotNull
        String originalFilename = file.getOriginalFilename();
        //生成一个唯一的文件名，保证不会重复
        String key = UUID.randomUUID().toString() + "_" + originalFilename;

        //创建一个临时文件，用于保存上传的文件内容
        File localFile = null;
        try {
            localFile = File.createTempFile("temp", null);
            //将上传的文件内容写入临时文件中
            file.transferTo(localFile);
            //创建一个 PutObjectRequest 对象，用于指定将临时文件上传到 COS 的哪个存储桶（bucket）中以及使用什么样的文件名
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile);
            //调用 COS 客户端的 putObject 方法，将临时文件上传到 COS 中的指定存储桶中
            cosClient.putObject(putObjectRequest);
            //存放图片和视频的url
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        String fileUrl = "https://" + bucketName + ".cos.ap-nanjing.myqcloud.com/" + key;
        return fileUrl;
    }

}
